/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package presenter;

import boundary.CriaContaView;
import collection.CollectionAgencia;
import collection.CollectionContaCorrente;
import entity.Agencia;
import entity.ContaCorrente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author jakson
 */
public class CriarContaPresenter {

    private CriaContaView view;
    private collection.CollectionAgencia conta;
    collection.CollectionContaCorrente contas = new CollectionContaCorrente();

    public CriarContaPresenter(String cliente, String cpf,String opcao,ContaCorrente a) {
        view = new CriaContaView(null, true);

        if (opcao.equals("bloquear")) {

            desmarcarCampo();
            carregarTelaEdicao(a);
            view.getBtnSalvar().addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent ae) {
                    editar();
                }
            });
            
            
        }else{
            
            carregaTela(cliente, cpf);
            carregaAgenciasComboBox();
            
            view.getBtnSalvar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
               
                    salvarConta();
        
                }
            
        });
        
        }

        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                fechar();
            }
        });

        
        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    private void fechar() {
        view.dispose();
        //new GerentePresenter();
    }

    private void limparCampos() {
        view.getCampoNConta().setText("");
        view.getCampoLimite().setText("");
        view.getCampoSaldo().setText("");
        view.getCampoNomeCliente().setText("");
        view.getCampoCpf().setText("");
        view.dispose();


    }

    private void salvarConta() {
     try{
        ContaCorrente contacor = new ContaCorrente(view.getCampoNConta().getText(), Float.parseFloat(view.getCampoSaldo().getText()),
                view.getComboBoxSituacao().getSelectedItem().toString(), Float.parseFloat(view.getCampoLimite().getText()),
                view.getCampoNomeCliente().getText(), view.getCampoCpf().getText(), view.getComboBoxAgencia().getSelectedItem().toString());

        if (view.getCampoLimite().getText().isEmpty()) {
            throw new Exception(" CAMPO LIMITE VAZIO ");
        }

        if (view.getCampoNConta().getText().isEmpty()) {
            throw new Exception(" CAMPO NUMERO DA CONTA VAZIO ");
        }

        if (view.getCampoSaldo().getText().isEmpty()) {
            throw new Exception(" CAMPO SALDO VAZIO");
        } else {

            contas.incluirContaCorrente(contacor);
            
            JOptionPane.showMessageDialog(null, "CADASTRO REALIZADO COM SUCESSO");
            limparCampos();
        }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(view, e.getMessage());
        }

    
}
    
    private void editar(){
        
         try{
        ContaCorrente contacor = new ContaCorrente(view.getCampoNConta().getText(), Float.parseFloat(view.getCampoSaldo().getText()),
                view.getComboBoxSituacao().getSelectedItem().toString(), Float.parseFloat(view.getCampoLimite().getText()),
                view.getCampoNomeCliente().getText(), view.getCampoCpf().getText(), view.getComboBoxAgencia().getSelectedItem().toString());

        if (view.getCampoLimite().getText().isEmpty()) {
            throw new Exception(" CAMPO LIMITE VAZIO ");
        }

        if (view.getCampoNConta().getText().isEmpty()) {
            throw new Exception(" CAMPO NUMERO DA CONTA VAZIO ");
        }

        if (view.getCampoSaldo().getText().isEmpty()) {
            throw new Exception(" CAMPO SALDO VAZIO");
        } else {

            contas.editacao(contacor);
            
            
            JOptionPane.showMessageDialog(null, "EDIÇÃO REALIZADO COM SUCESSO");
            limparCampos();
        }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(view, e.getMessage());
        }

    
}
        
        
        
    
    
    private void carregaTela(String cliente, String cpf) {
        view.getCampoNomeCliente().setText(cliente);
        view.getCampoCpf().setText(cpf);

    }

    private void carregaAgenciasComboBox() {

        ArrayList<Agencia> co = new ArrayList<Agencia>();
        conta = new CollectionAgencia();
        co = conta.getAgencias();

        for (int i = 0; i < co.size(); i++) {
            view.getComboBoxAgencia().addItem(co.get(i).getCodigo());
        }

    }
    
    private void carregarTelaEdicao(ContaCorrente a){
        
        view.getCampoLimite().setText(String.valueOf(a.getLimiteCliente()));
        view.getCampoSaldo().setText(String.valueOf(a.getSaldo()));
        view.getCampoNomeCliente().setText(a.getNome().toString());
        view.getCampoCpf().setText(a.getCpf());
        view.getCampoNConta().setText(a.getnConta());
        view.getComboBoxAgencia().addItem(a.getAgencia());
        view.getComboBoxSituacao().setSelectedItem(a.getStatus());
        view.getComboBoxTipo().setSelectedItem("Corrente");
        
    }
    private void desmarcarCampo() {

        view.getCampoNomeCliente().setEnabled(false);
        view.getCampoCpf().setEnabled(false);
        view.getCampoLimite().setEnabled(true);
        view.getCampoNConta().setEnabled(false);
        view.getCampoSaldo().setEnabled(false);
        view.getComboBoxSituacao().setEnabled(true);
        view.getComboBoxAgencia().setEnabled(false);
        view.getComboBoxTipo().setEnabled(false);
    }
}
